/*
 * @Author: hmhvictory 1400628624@qq.com
 * @Date: 2025-07-22 16:58:32
 * @LastEditors: hmhvictory 1400628624@qq.com
 * @LastEditTime: 2025-07-22 17:08:55
 * @FilePath: \实训笔记\day07\demo3.java
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
package day07;

public class demo3 {
    // 判断一个整数是否为水仙花数
    public static boolean isNarcissistic(int num) {
        // 水仙花数是指一个n位数，其各位数字的n次方之和等于该数本身
        if (num < 0) {
            return false;
        }       
        // 计算数字的位数
        int length = String.valueOf(num).length();      
        // 计算各位数字的n次方之和
        int sum = 0;
        int temp = num;
        while (temp > 0) {
            int digit = temp % 10;  // 获取最后一位数字
            sum += (int) Math.pow(digit, length);  // 累加各位数字的n次方
            temp /= 10;  // 移除最后一位数字
        }      
        // 判断是否为水仙花数
        return sum == num;
    }   
    public static void main(String[] args) {
        System.out.println("所有的水仙花数（通常指3位数）：");      
        // 通常水仙花数指3位数，这里输出100-999之间的水仙花数
        for (int i = 100; i <= 999; i++) {
            if (isNarcissistic(i)) {
                System.out.print(i + " ");
            }
        }     
    }
}

